Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра електронних
обчислювальних машин
Звіт
про виконання лабораторної роботи № 1
з курсу „ Захист інформації в комп’ютерних системах ”
Тема:
Шифр Цезаря.
Виконав:
ст. гр. КІ-4
Львів – 2005
Мета роботи: Ознайомитися із алгоритмом шифрування Цезаря та створити програму, що дозволяє шифрувати та дешифрувати текст за допомогою цього алгоритму.
Теоретичні відомості:
Насправді достовірно не відомо, коли з'явився тайнопис, але глиняна табличка, зроблена приблизно 1500 років до нашої ери, містить один з найперших її прикладів. Греки використовували коди принаймні з 475 року до нашої ери, а вищі кола в Римі використовували прості шифри в період царювання Юлія Цезаря. На початку нашої ери інтерес до криптографії (також, як і до інших інтелектуальних занять) впав; єдиними, хто іноді застосовував її, були ченці. З настанням епохи відродження мистецтво криптографії стало розцвітати. За часів Луї ХIV в Франції для урядових повідомлень використовувалося шифрування, засноване на 587 довільно набраних ключах.
У ХIX столітті розвитку криптографії сприяв винахід телеграфу і азбуки Морзе. Азбука Морзе була першим двійковим представленням (крапка і тире) алфавіту, яке одержало широке розповсюдження.
У першу світову війну у ряді країн були розроблені "шифрувальні машини", які дозволяють легко кодувати і декодувати текст, використовуючи складний шифр. З цієї миті історія криптографії стає історією дешифрації кодів.
До того, як для кодування і декодування стали використовуватись механічні пристрої, складні шифри застосовувалися не часто, оскільки вимагали багато часу і сили для кодування і декодування. Тому більшість кодів можна було розшифрувати за відносно короткий проміжок часу. Проте, дешифрація стала набагато складнішою, коли стали застосовуватися шифрувальні машини. Хоча сучасні комп'ютери могли б розшифрувати ці коди відносно легко, але навіть комп'ютери не можуть наблизитися до видатного таланту Герберта Ядлея, який дотепер вважається найвидатнішим дешифрувальником всіх часів. В 1915 році у свій вільний час він розшифрував дипломатичний код США, а потім у 1922 році дипломатичний код Японії, хоча він навіть не знав японської мови.
Під час другої світової війни головний метод дешифрації кодів ґрунтувався на крадіжці ворожої дешифрувальної машини, таким чином можна було уникнути втомливого процесу розшифрування кодів. Фактично володіння службою Аллеса німецькою шифрувальною машиною, що було не відоме Німеччині, сприяло в певній мірі результату війни.
З приходом комп'ютерів, особливо розрахованих на багато користувачів, необхідність в засекреченні інформації і в стійких кодах стала ще гострішою. Необхідно не тільки захищати файли, але і управляти доступом власне до комп'ютера. Було розроблено багато методів шифрування файлів даних і алгоритм DES (Стандарт шифрування даних), прийнятий Національним бюро стандартів США, довший час вважалося, що його неможливо розшифрувати.
Суть алгоритму Цезаря полягає у заміні кожної літери в повідомленні на іншу, зсунуту в алфавіті на певну кількість знаків (в оригіналі на 3). Дешифрація виконується у зворотньому порядку, тобто зсувом кожної літери зашифрованого повідомлення на 3 знаки назад. В комп’ютерній реалізації в якості алфавіту використовується таблиця символів ASCII, або ж бінарний код символу (байт).
Текст програми:
void encrypt() //функція шифрування файлу
{
char ch, ch_enc;
puts("\n\t\tENCRYPTING STARTED");
ch=ch_enc=fgetc(in);
while (!feof(in)) {
printf("\n %c (%d)",ch_enc,ch_enc);
if (isalpha(ch)) { // якщо літера, то "шифруємо", ch_enc=ch_enc+K; // якщо ні - залишаємо те, що було
if ( ch>='A' && ch<='Z' && ch_enc>'Z' ) {
ch_enc=ch_enc-26;
}// A – Z
if ( ch>='a' && ch<='z' && ch_enc>'z' ) {
ch_enc=ch_enc-26;
}// a - z
printf(" => encrypted: %c (%d)",ch_enc,ch_enc);
}
fputc(ch_enc,out);
ch=ch_enc=fgetc(in);
}
...